package com.yqs.servlet; /**
 * @author Ye QS
 * @className ${NAME}
 * @description ${description}
 * @version 0.1
 * @date 2024/8/2 15:02
 * @since jdk11
 */

import com.yqs.mapper.EmpMapper;
import com.yqs.utils.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

// 使用@WebServlet注解指定servlet的访问路径
@WebServlet("/EDS")
public class EmpDelServlet extends HttpServlet {

    // 重写doPost方法以处理POST请求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取SqlSession对象，它是MyBatis中用于执行数据库操作的对象
        SqlSession session = SqlSessionFactoryUtil.getSqlSession();

        // 通过SqlSession获取EmpMapper接口的实例，用于访问数据库中的员工数据
        EmpMapper mapper = session.getMapper(EmpMapper.class);

        try {
            // 从请求参数中获取名为"empId"的字符串
            String empIdStr = request.getParameter("empId");

            // 检查empIdStr是否不为null且不为空
            if (empIdStr != null && !empIdStr.isEmpty()) {
                // 将字符串empIdStr转换为整数类型的empId
                int empId = Integer.parseInt(empIdStr);

                // 使用EmpMapper执行删除操作，根据员工ID
                int i = mapper.delByEmpId(empId);

                // 如果影响的行数大于0，表示删除成功
                if (i > 0) {
                    // 打印成功消息到控制台
                    System.out.println("删除成功");
                    // 重定向到员工列表页面
                    response.sendRedirect("fuzzyEmpList.html");
                }
                // 这里可以添加更多的逻辑处理，例如删除失败的情况
            } else {
                // 如果empId参数为空，发送400错误响应
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Employee ID is required.");
            }
        } catch (NumberFormatException e) {
            // 捕获NumberFormatException异常，这通常发生在转换失败时
            // 发送400错误响应，告知用户Employee ID格式不正确
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid Employee ID format.");
        }
    }

    // 重写doGet方法以处理GET请求，通常情况下GET请求不用于删除操作
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 对于GET请求，这里直接委托给doPost方法处理
        doPost(request, response);
    }
}